package org.soderiakelvy.controller.sujeto;

import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

import org.soderiakelvy.controller.util.Constante;
import org.soderiakelvy.controller.util.Util;
import org.soderiakelvy.model.domain.ComercializacionPackVO;
import org.soderiakelvy.model.domain.FrioCalorVO;
import org.soderiakelvy.model.domain.ProductoVO;
import org.soderiakelvy.model.domain.SucursalFrioCalorVO;
import org.soderiakelvy.model.domain.SucursalProductoVO;
import org.soderiakelvy.model.domain.SucursalVO;
import org.soderiakelvy.model.domain.SujetoVO;
import org.soderiakelvy.model.domain.TipoClienteVO;
import org.soderiakelvy.model.domain.VisitaVO;
import org.soderiakelvy.model.service.ProductoServicio;
import org.soderiakelvy.model.service.RepartoServicio;
import org.soderiakelvy.model.service.SucursalServicio;
import org.soderiakelvy.model.service.SujetoServicio;
import org.soderiakelvy.model.service.imp.ProductoServicioImp;
import org.soderiakelvy.model.service.imp.RepartoServicioImp;
import org.soderiakelvy.model.service.imp.SucursalServicioImp;
import org.soderiakelvy.model.service.imp.SujetoServicioImpl;
import org.soderiakelvy.model.util.ConstantModel;

@ManagedBean
@ViewScoped
public class SujetoResidencialDelete {
	
	private String nombreCompleto;
	private String direccionCompleta;
	private VisitaVO visita;
	private String[] diasSeleccionados;
	
	List<SucursalProductoVO> listSucursalProducto;
	List<SucursalFrioCalorVO> listSucursalfrioCalor;
	
	private ComercializacionPackVO comPack;
	
	private SucursalVO sucursal;
	
	
	public SujetoResidencialDelete() {
		System.out.println("CONSTRUCTOR DE SUJETO RESIDENCIAL DELETE");
		
		comPack = new ComercializacionPackVO();
		visita = new VisitaVO();
		
		FacesContext fc = FacesContext.getCurrentInstance();
		Map<String,Object> sessionParams = fc.getExternalContext().getSessionMap();
		sucursal = (SucursalVO) sessionParams.get("sucursal");
		
		System.out.println("tiposujeto"+sucursal.getSujeto().getTipoCliente().getNombre());
		obtenerDatos();
	}

	private void obtenerDatos(){
		this.setNombreCompleto(Util.getNombreCompleto(sucursal));// ver clase UTIL
		this.setDireccionCompleta(Util.getDireccion(sucursal));
		
		//----CARGAR PRODUCTOS-----------
		SucursalServicio ss = new SucursalServicioImp();
		listSucursalProducto = ss.getSucursalProductoBySucursal(sucursal);
		
		//---------------------------------------
		
		// ------CARGAR PACK---------------------
		if (ss.getComercializacionesPackBySucursal(sucursal) != null){
			
			this.setComPack(ss.getComercializacionesPackBySucursal(sucursal).get(0));

			//----CARGAR FRIO-CALOR-----------
			listSucursalfrioCalor = ss.getSucursalFrioCalorBySucursal(sucursal);
			
			System.out.println("SI TIENE PACK");
			//--------------------------------
		}else{
			System.out.println("NO TIENE PACK");
			this.comPack.getPack().setNombre("");
		}
		//-------------------------------
		//----CARGAR VISITA---------------
		
		RepartoServicio rs = new RepartoServicioImp();
		
		visita = rs.getVisitaBySucursal(sucursal);
		
		int j = 0;
		
		if (visita.getLunes() == 1) {
			j = j +1;
		}
		if (visita.getMartes() == 1) {
			j = j +1;
		}
		if (visita.getMiercoles() == 1) {
			j = j +1;
		}
		if (visita.getJueves() == 1) {
			j = j +1;
		}
		if (visita.getViernes() == 1) {
			j = j +1;
		}
		if (visita.getSabado() == 1) {
			j = j +1;
		}
		diasSeleccionados = new String[6];
		
		int k = 0;	
		
		if (visita.getLunes() == 1) {
			diasSeleccionados[k] = "1";
			++k;
		}
		if (visita.getMartes() == 1) {
			diasSeleccionados[k] = "2";
			++k;
		}
		if (visita.getMiercoles() == 1) {
			diasSeleccionados[k] = "3";
			++k;
		}
		if (visita.getJueves() == 1) {
			diasSeleccionados[k] = "4";
			++k;
		}
		if (visita.getViernes() == 1) {
			diasSeleccionados[k] = "5";
			++k;
		}
		if (visita.getSabado() == 1) {
			diasSeleccionados[k] = "6";
			++k;
		}
		//-----------CARGAR REPARTO---------------------
		System.out.println("reparto "+visita.getReparto().getNombre());
		//----------------------------------------------
	}
	
	public String cancelar(){
		return Constante.URL_RESIDENCIAL_LIST;
	}
	
	public String eliminar(){
		System.out.println("Boton Eliminar");

		//---------------ELIMINAR VISITA--------------------
		RepartoServicio rs = new RepartoServicioImp();
		if (rs.deleteVisita(visita).equals(ConstantModel.SUCCESS)){
			System.out.println("Eliminacion Exitosa");
		}else{
			System.out.println("Error en la Elimicacion");
		}
		System.out.println("ELIMINACION DE VISITA OK");
		//--------------------------------------------------
		
		//---------------ELIMINAR SUCURSAL-PRODUCTO---------
		SucursalServicio ss = new SucursalServicioImp();
		for (SucursalProductoVO sp : listSucursalProducto){
			ss.deleteSucursalProductoVO(sp);
		}
		System.out.println("ELIMINACION DE SUCURSAL-PRODUCTO OK");
		//--------------------------------------------------
		
		//---------------ELIMINAR SUCURSAL FRIO-CALOR-------
		ProductoServicio ps = new ProductoServicioImp();
		if (listSucursalfrioCalor != null){
			for(SucursalFrioCalorVO sfc : listSucursalfrioCalor ){
				FrioCalorVO fc = new FrioCalorVO();
				fc = sfc.getFrioCalor();
				fc.setEstado("FABRICA");
				ps.updateFrioCalorVO(fc);
				
				ss.deleteSucursalFrioCalorVO(sfc);
			}
			System.out.println("ELIMINACION DE SUCURSAL-FRIOCALOR OK");
		}
		//--------------------------------------------------

		//---------------ELIMINAR COMERCIALIZACION-PACK-----
		
		System.out.println("Datos de la  Comercializacion: "+getComPack().getComercializacionPackId());
		if (ss.deleteComercializcionPackVO(getComPack()).equals(ConstantModel.SUCCESS) ){
			System.out.println("Eliminacion Exitosa Comercializacion");
		}else{
			System.out.println("Error en la Elimicacion");
		}
		System.out.println("ELIMINACION DE COMERCIALIZACION OK");
		//--------------------------------------------------

		//---------------ELIMINAR SUJETO--------------------
		SujetoServicio sserv = new SujetoServicioImpl();
		if (sserv.deleteSujetoVO(sucursal.getSujeto()).equals(ConstantModel.SUCCESS)){
			System.out.println("Eliminacion Exitosa Sujeto");
		}else{
			System.out.println("Error en la Elimicacion");
		}
		System.out.println("ELIMINACION DE SUJETO OK");
		
		//--------------------------------------------------
		
		//---------------ELIMINAR SUCURSAL------------------
		if (ss.deleteSucursal(sucursal).equals(ConstantModel.SUCCESS)){
			System.out.println("Eliminacion Exitosa Sucursal");
		}else{
			System.out.println("Error en la Elimicacion");
		}
		System.out.println("ELIMINACION DE SUCURSAL OK");
		//--------------------------------------------------
		
		return Constante.URL_RESIDENCIAL_DELETE;
	}
	
	private static Map<String,Object> diasSemanales;
	static{
		diasSemanales = new LinkedHashMap<String,Object>();
		diasSemanales.put("Lunes", "1"); //label, value
		diasSemanales.put("Martes", "2");
		diasSemanales.put("Miercoles", "3");
		diasSemanales.put("Jueves", "4");
		diasSemanales.put("Viernes", "5");
		diasSemanales.put("Sabado", "6");
	}
	
	
	
//---------GETTERS AND SETTERS------------------------
	
	public static Map<String, Object> getDiasSemanales() {
		return diasSemanales;
	}

	public static void setDiasSemanales(Map<String, Object> diasSemanales) {
		SujetoResidencialDelete.diasSemanales = diasSemanales;
	}

	public String getNombreCompleto() {
		return nombreCompleto;
	}

	public void setNombreCompleto(String nombreCompleto) {
		this.nombreCompleto = nombreCompleto;
	}

	public String getDireccionCompleta() {
		return direccionCompleta;
	}

	public void setDireccionCompleta(String direccionCompleta) {
		this.direccionCompleta = direccionCompleta;
	}

	public VisitaVO getVisita() {
		return visita;
	}

	public void setVisita(VisitaVO visita) {
		this.visita = visita;
	}

	public String[] getDiasSeleccionados() {
		return diasSeleccionados;
	}

	public void setDiasSeleccionados(String[] diasSeleccionados) {
		this.diasSeleccionados = diasSeleccionados;
	}

	public ComercializacionPackVO getComPack() {
		return comPack;
	}

	public void setComPack(ComercializacionPackVO comPack) {
		this.comPack = comPack;
	}

	public List<SucursalProductoVO> getListSucursalProducto() {
		return listSucursalProducto;
	}

	public void setListSucursalProducto(List<SucursalProductoVO> listSucursalProducto) {
		this.listSucursalProducto = listSucursalProducto;
	}

	public List<SucursalFrioCalorVO> getListSucursalfrioCalor() {
		return listSucursalfrioCalor;
	}

	public void setListSucursalfrioCalor(
			List<SucursalFrioCalorVO> listSucursalfrioCalor) {
		this.listSucursalfrioCalor = listSucursalfrioCalor;
	}

	public SucursalVO getSucursal() {
		return sucursal;
	}

	public void setSucursal(SucursalVO sucursal) {
		this.sucursal = sucursal;
	}
	
	
}
